package demo02;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;

public class Demo02OutputStreamWriter {
    public static void main(String[] args) {
        /*
         *  InputStreamReader类的构造方法：
         *      InputStreamReader(InputStream in)：创建一个使用默认字符集的字符输入转换流
         *      InputStreamReader(InputStream in, String charsetName)：创建一个指定字符集的字符输入转换流
         *  注意：
         *      1. InputStreamReader类是Reader字符输入流的子类
         *      2. 参数为InputStream字节输入流及其子类，不可填入字符输入流
         *      3. charsetName参数如果不填写，该流使用的字符集为默认字符集（系统默认字符集为gbk，vscode与系统同步，idea默认字符集为utf-8）
         *      4. charsetName参数如果填写，则该流使用指定的字符集
         */
        try (OutputStreamWriter outputStreamWriterUtf8 = new OutputStreamWriter( // 创建字符输出转换流，参数为文件字节输出流
                new FileOutputStream("file\\charsetTxt\\utf8.txt"), "utf-8"); // 指定输出使用的字符集：utf-8
                OutputStreamWriter outputStreamWriterGbk = new OutputStreamWriter( // 创建字符输出转换流，参数为文件字节输出流
                        new FileOutputStream("file\\charsetTxt\\gbk.txt"))) { // 不指定输出使用的字符集：系统默认字符集gbk
            ArrayList<String> arrayList = new ArrayList<>(); // 准备输出到文件的字符串数组
            Collections.addAll(arrayList, "土土~你是粑粑麻麻心爱的小孩~", "土土~这个世界有了你欢乐少不了", "土土~");
            for (String line : arrayList) { // 遍历数组，输出字符串到文件中
                outputStreamWriterUtf8.write(line);
                outputStreamWriterUtf8.write("\r\n"); // 换行
                outputStreamWriterGbk.write(line);
                outputStreamWriterGbk.write("\r\n"); // 换行
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
